컨테이너 이미지
개요
컨테이너 런타임에서 컨테이너를 실행하기 위해 기본으로 필요한 패키지.
쉽계 예를 들자면, usb 같은 놈이다.
usb 내용물이 컨테이너라고 치면 우리는 내용물을 까서 활용하기 위해 usb가 필요하다.
그러한 역할을 하는 놈이 바로 이미지이다.
IT적으로 말하자면 코드가 컴파일된 파일이랄까.
아무튼 요지는 컨테이너를 실행하기 위해서는 반드시 컨테이너의 동작과 컨테이너 속 환경을 정의해주는 이미지가 필요하다.
구조
레이어가 층층히 쌓인 구조..
미완성된 글입니다!!
추가 작성해야 하는 글입니다!!!
압축..
저장소
이미지는 보통 레지스트리라는 저장소에 보관한다.
이미지 빌드
그럼 이미지를 만들기 위해 어떻게 해야 하는가?
이미지가 어떻게 만들어질지 정의하는 파일을 만들고, 이미지를 빌드해주는 툴을 사용하면 된다.
도커가 기본적으로 선두주자였던 만큼, 정의하는 파일은 대체로 항상 이름이 Dockerfile이다.
이미지 빌드 도구로서도 도커가 가장 유명하긴 하지만, 최근에는 다양한 빌드 도구가 나와서 도커만이 유일한 선택지는 아니다.
다양한 빌드 도구에 대한 벤치마크 테스트 글도 있다.[1]
개인적으로 그래도 가장 친숙하게 느껴지는 것은 buildKit이다.
각각의 툴의 차이를 짚는 것도 좋겠지만, 여기에서는 빌드를 할 때 고려할 점이나 활용할 수 있는 기능들을 알아본다.
빌드 원리
미완성된 글입니다!!
추가 작성해야 하는 글입니다!!!
멀티 스테이지 빌드
이미지의 크기를 줄이는 방법 중 하나로 빌드 될 때 스테이지를 나누는 방식이다.
미완성된 글입니다!!
추가 작성해야 하는 글입니다!!!
멀티 플랫폼 빌드
컨테이너는 실행되는 환경의 영향을 많이 받는다.
비단 컨테이너 런타임만 이야기하는 것이 아니라, 실제 물리 자원, 즉 cpu의 영향도 받는다는 이야기이다.
가령 amd64에서 빌드된 이미지는 arm에서는 컨테이너로 돌릴 수가 없다.
이는 클라우드가 추구하는 특성 중, 환경으로부터의 종속성 탈피를 해치는 큰 방해 요인 중 하나이다.
그래서 등장한 기술 중 하나가 바로 멀티 플랫폼 빌드이다.
다르게는 멀티 아키텍쳐 빌드라고도 부른다.
관련 문서
이름 | noteType | created |
---|---|---|
레지스트리 | knowledge | 2024-07-04 |
Amazon Elastic Container Registry | knowledge | 2024-11-03 |
컨테이너 이미지 | knowledge | 2025-03-24 |
buildKit | knowledge | 2025-03-30 |
buildKit | knowledge | 2025-05-04 |
Harbor | knowledge | 2025-06-16 |
k8s air-gap install | topic | 2025-06-09 |
폐쇄망 k8s 설치 개요 | topic | 2025-06-09 |
에어갭 kubespray 단일 노드 설치 with Vagrant | topic | 2025-06-09 |
kubespray 삽질 | topic | 2025-06-11 |
kubesphere | topic | 2025-06-12 |
kubespray - 에어갭 최소 이미지, HA, cillium 기본 | topic | 2025-06-12 |
minio 케이스 | topic | 2025-06-14 |
스터디 1 | topic | 2025-06-15 |
kubespray cillium 특화 세팅 | topic | 2025-06-16 |
kubespray 심화 | topic | 2025-06-17 |
큐브스프레이 한정 설명 | topic | 2025-06-18 |
E-buildKit을 활용한 멀티 플랫폼, 캐싱 빌드 실습 | topic/explain | 2025-03-30 |
T-초기화 컨테이너의 이미지 바꾸기 | topic/temp | 2024-08-22 |